// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/kpdus/jad.html
// Decompiler options: braces fieldsfirst space lnc
package com.google.zxing.pdf417.decoder;
import com.google.zxing.FormatException;
import com.google.zxing.common.DecoderResult;
import java.math.BigInteger;
// Referenced classes of package com.google.zxing.pdf417.decoder:
// d, c
final class b
{
private static final int a = 900;
private static final int b = 901;
private static final int c = 902;
private static final int d = 924;
private static final int e = 928;
private static final int f = 923;
private static final int g = 922;
private static final int h = 913;
private static final int i = 15;
private static final int j = 25;
private static final int k = 27;
private static final int l = 27;
private static final int m = 28;
private static final int n = 28;
private static final int o = 29;
private static final int p = 29;
private static final char q[] = {
';', '<', '>', '@', '[', '\\', '}', '_', '`', '~',
'!', '\r', '\t', ',', ':', '\n', '-', '.', '$', '/',
'"', '|', '*', '(', ')', '?', '{', '}', '\''
};
private static final char r[] = {
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'&', '\r', '\t', ',', ':', '#', '-', '.', '$', '/',
'+', '%', '*', '=', '^'
};
private static final BigInteger s[];
private b()
{
}
private static int a(int i1, int ai[], int j1, StringBuilder stringbuilder)
{
if (i1 == 901)
{
int i3 = 0;
long l3 = 0L;
char ac1[] = new char[6];
int ai1[] = new int[6];
boolean flag1 = false;
do
{
if (j1 >= ai[0] || flag1)
{
break;
}
int k3 = j1 + 1;
int i4 = ai[j1];
int k1;
long l1;
boolean flag;
int i2;
int j2;
char ac[];
int k2;
long l2;
int j3;
if (i4 < 900)
{
ai1[i3] = i4;
i3++;
l3 = l3 * 900L + (long)i4;
j1 = k3;
} else
if (i4 == 900 || i4 == 901 || i4 == 902 || i4 == 924 || i4 == 928 || i4 == 923 || i4 == 922)
{
j1 = k3 - 1;
flag1 = true;
} else
{
j1 = k3;
}
if (i3 % 5 == 0 && i3 > 0)
{
for (int j4 = 0; j4 < 6;)
{
ac1[5 - j4] = (char)(int)(l3 % 256L);
long l4 = l3 >> 8;
j4++;
l3 = l4;
}
stringbuilder.append(ac1);
i3 = 0;
}
} while (true);
for (j3 = 5 * (i3 / 5); j3 < i3; j3++)
{
stringbuilder.append((char)ai1[j3]);
}
} else
if (i1 == 924)
{
k1 = 0;
l1 = 0L;
flag = false;
do
{
if (j1 >= ai[0] || flag)
{
break;
}
i2 = j1 + 1;
j2 = ai[j1];
if (j2 < 900)
{
k1++;
l1 = l1 * 900L + (long)j2;
j1 = i2;
} else
if (j2 == 900 || j2 == 901 || j2 == 902 || j2 == 924 || j2 == 928 || j2 == 923 || j2 == 922)
{
j1 = i2 - 1;
flag = true;
} else
{
j1 = i2;
}
if (k1 % 5 == 0 && k1 > 0)
{
ac = new char[6];
for (k2 = 0; k2 < 6;)
{
ac[5 - k2] = (char)(int)(255L & l1);
l2 = l1 >> 8;
k2++;
l1 = l2;
}
stringbuilder.append(ac);
}
} while (true);
}
return j1;
}
private static int a(int ai[], int i1, StringBuilder stringbuilder)
{
int ai1[] = new int[ai[0] << 1];
int ai2[] = new int[ai[0] << 1];
boolean flag = false;
int j1 = 0;
label0:
do
{
while (i1 < ai[0] && !flag)
{
int k1 = i1 + 1;
int l1 = ai[i1];
if (l1 < 900)
{
ai1[j1] = l1 / 30;
ai1[j1 + 1] = l1 % 30;
j1 += 2;
i1 = k1;
} else
{
switch (l1)
{
default:
i1 = k1;
break;
case 900:
i1 = k1 - 1;
flag = true;
break;
case 901:
i1 = k1 - 1;
flag = true;
break;
case 902:
i1 = k1 - 1;
flag = true;
break;
case 913:
ai1[j1] = 913;
i1 = k1 + 1;
ai2[j1] = ai[k1];
j1++;
break;
case 924:
i1 = k1 - 1;
flag = true;
break;
}
continue label0;
}
}
a(ai1, ai2, j1, stringbuilder);
return i1;
} while (true);
}
static DecoderResult a(int ai[])
{
StringBuilder stringbuilder;
int i1;
int j1;
stringbuilder = new StringBuilder(100);
i1 = 2;
j1 = ai[1];
_L7:
if (i1 >= ai[0])
{
break MISSING_BLOCK_LABEL_168;
}
j1;
JVM INSTR lookupswitch 5: default 76
// 900: 106
// 901: 117
// 902: 129
// 913: 140
// 924: 152;
goto _L1 _L2 _L3 _L4 _L5 _L6
_L1:
int k1 = a(ai, i1 - 1, stringbuilder);
_L8:
if (k1 < ai.length)
{
i1 = k1 + 1;
j1 = ai[k1];
} else
{
throw FormatException.getFormatInstance();
}
if (true) goto _L7; else goto _L2
_L2:
k1 = a(ai, i1, stringbuilder);
goto _L8
_L3:
k1 = a(j1, ai, i1, stringbuilder);
goto _L8
_L4:
k1 = b(ai, i1, stringbuilder);
goto _L8
_L5:
k1 = a(j1, ai, i1, stringbuilder);
goto _L8
_L6:
k1 = a(j1, ai, i1, stringbuilder);
goto _L8
return new DecoderResult(null, stringbuilder.toString(), null, null);
}
private static String a(int ai[], int i1)
{
BigInteger biginteger = BigInteger.ZERO;
for (int j1 = 0; j1 < i1; j1++)
{
biginteger = biginteger.add(s[-1 + (i1 - j1)].multiply(BigInteger.valueOf(ai[j1])));
}
String s1 = biginteger.toString();
if (s1.charAt(0) != '1')
{
throw FormatException.getFormatInstance();
} else
{
return s1.substring(1);
}
}
private static void a(int ai[], int ai1[], int i1, StringBuilder stringbuilder)
{
d d1;
d d2;
int j1;
d1 = d.a;
d2 = d.a;
j1 = 0;
_L10:
if (j1 >= i1) goto _L2; else goto _L1
_L1:
int k1;
int l1;
char c1;
k1 = ai[j1];
l1 = c.a[d1.ordinal()];
c1 = '\0';
l1;
JVM INSTR tableswitch 1 6: default 80
// 1 98
// 2 223
// 3 360
// 4 503
// 5 566
// 6 606;
goto _L3 _L4 _L5 _L6 _L7 _L8 _L9
_L3:
if (c1 != 0)
{
stringbuilder.append(c1);
}
j1++;
goto _L10
_L4:
if (k1 < 26)
{
c1 = (char)(k1 + 65);
} else
if (k1 == 26)
{
c1 = ' ';
} else
if (k1 == 27)
{
d1 = d.b;
c1 = '\0';
} else
if (k1 == 28)
{
d1 = d.c;
c1 = '\0';
} else
if (k1 == 29)
{
d d9 = d.f;
d d10 = d1;
d1 = d9;
d2 = d10;
c1 = '\0';
} else
{
c1 = '\0';
if (k1 == 913)
{
stringbuilder.append((char)ai1[j1]);
c1 = '\0';
}
}
goto _L3
_L5:
if (k1 < 26)
{
c1 = (char)(k1 + 97);
} else
if (k1 == 26)
{
c1 = ' ';
} else
if (k1 == 27)
{
d d7 = d.e;
d d8 = d1;
d1 = d7;
d2 = d8;
c1 = '\0';
} else
if (k1 == 28)
{
d1 = d.c;
c1 = '\0';
} else
if (k1 == 29)
{
d d5 = d.f;
d d6 = d1;
d1 = d5;
d2 = d6;
c1 = '\0';
} else
{
c1 = '\0';
if (k1 == 913)
{
stringbuilder.append((char)ai1[j1]);
c1 = '\0';
}
}
goto _L3
_L6:
if (k1 < 25)
{
c1 = r[k1];
} else
if (k1 == 25)
{
d1 = d.d;
c1 = '\0';
} else
if (k1 == 26)
{
c1 = ' ';
} else
if (k1 == 27)
{
d1 = d.b;
c1 = '\0';
} else
if (k1 == 28)
{
d1 = d.a;
c1 = '\0';
} else
if (k1 == 29)
{
d d3 = d.f;
d d4 = d1;
d1 = d3;
d2 = d4;
c1 = '\0';
} else
{
c1 = '\0';
if (k1 == 913)
{
stringbuilder.append((char)ai1[j1]);
c1 = '\0';
}
}
goto _L3
_L7:
if (k1 < 29)
{
c1 = q[k1];
} else
if (k1 == 29)
{
d1 = d.a;
c1 = '\0';
} else
{
c1 = '\0';
if (k1 == 913)
{
stringbuilder.append((char)ai1[j1]);
c1 = '\0';
}
}
goto _L3
_L8:
if (k1 < 26)
{
c1 = (char)(k1 + 65);
d1 = d2;
} else
{
if (k1 != 26)
{
break MISSING_BLOCK_LABEL_647;
}
c1 = ' ';
d1 = d2;
}
goto _L3
_L9:
if (k1 < 29)
{
c1 = q[k1];
d1 = d2;
} else
{
if (k1 != 29)
{
break MISSING_BLOCK_LABEL_647;
}
d1 = d.a;
c1 = '\0';
}
goto _L3
_L2:
return;
d1 = d2;
c1 = '\0';
goto _L3
}
private static int b(int ai[], int i1, StringBuilder stringbuilder)
{
int ai1[] = new int[15];
boolean flag = false;
int j1 = 0;
do
{
if (i1 >= ai[0] || flag)
{
break;
}
int k1 = i1 + 1;
int l1 = ai[i1];
if (k1 == ai[0])
{
flag = true;
}
if (l1 < 900)
{
ai1[j1] = l1;
j1++;
i1 = k1;
} else
if (l1 == 900 || l1 == 901 || l1 == 924 || l1 == 928 || l1 == 923 || l1 == 922)
{
i1 = k1 - 1;
flag = true;
} else
{
i1 = k1;
}
if (j1 % 15 == 0 || l1 == 902 || flag)
{
stringbuilder.append(a(ai1, j1));
j1 = 0;
}
} while (true);
return i1;
}
static
{
s = new BigInteger[16];
s[0] = BigInteger.ONE;
BigInteger biginteger = BigInteger.valueOf(900L);
s[1] = biginteger;
for (int i1 = 2; i1 < s.length; i1++)
{
s[i1] = s[i1 - 1].multiply(biginteger);
}
}
}